package top.lixunda.ecommerce.server.user.api.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.web.bind.annotation.*;
import top.lixunda.commerce.common.core.entity.MessageObject;
import top.lixunda.ecommerce.server.user.api.entity.db.UserPermissionDO;

import java.util.List;
import java.util.Map;

/**
 * 用户权限查询接口
 *
 * @author lixunda
 * @version time:2020/4/24 13:55
 */
@Api("用户权限查询接口")
@RequestMapping("/user_permission")
public interface IUserPermissionController {

    /**
     * 根据账号查询用户权限
     *
     * @param account 用户账户
     * @return 权限列表
     */
    @ApiModelProperty("根据账号查询用户权限")
    @GetMapping("queryPermissionsByAccount")
    MessageObject<List<UserPermissionDO>> queryPermissionsByAccount(@RequestParam("account") Integer account);

    /**
     * 根据账号查询用户权限
     *
     * @param account  用户账户
     * @param userType 用户类型
     * @return 权限列表
     */
    @ApiModelProperty("根据账号查询用户权限")
    @GetMapping("queryPermissionsByAccountAndType")
    MessageObject<List<UserPermissionDO>> queryPermissionsByAccountAndType(
            @RequestParam("account") Integer account, @RequestParam("userType") String userType);

    /**
     * 查询当前登陆账户的权限
     *
     * @return 权限列表
     */
    @ApiModelProperty("查询当前登陆账户的权限")
    @GetMapping("queryCurrentPermissions")
    MessageObject<List<UserPermissionDO>> queryCurrentPermissions();

    /**
     * 根据多个用户账户查询多个账户的权限
     *
     * @param accounts 账户列表
     * @return 多个账户的权限列表，键为用户编号，值为权限列表
     */
    @ApiModelProperty("根据多个用户账户查询多个账户的权限")
    @PostMapping("queryUsersPermissions")
    MessageObject<Map<Integer, List<UserPermissionDO>>> queryUsersPermissions(
            @RequestBody List<Integer> accounts);

}
